import axios from 'axios'

const instance = axios.create({
  // 与代理一致：后端网关为 /health，其它服务按不同前缀
  baseURL: '/',
  timeout: 10000,
  headers: {'X-Custom-Header': 'foobar'}
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    
    // 自动添加token到请求头
    const token = localStorage.getItem('token');
    if (token) {
        config.headers.Authorization = `Bearer ${token}`;
        console.log('请求已添加token:', token.substring(0, 20) + '...');
    }
    
    // 打印请求信息（开发环境）
    if (process.env.NODE_ENV === 'development') {
        console.log('API请求:', {
            method: config.method?.toUpperCase(),
            url: config.url,
            data: config.data,
            params: config.params,
            headers: config.headers
        });
    }
    
    return config;
  }, function (error) {
    // 对请求错误做些什么
    console.error('请求拦截器错误:', error);
    return Promise.reject(error);
  });

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    
    // 打印响应信息（开发环境）
    if (process.env.NODE_ENV === 'development') {
        console.log('API响应:', {
            status: response.status,
            url: response.config.url,
            data: response.data
        });
    }
    
    return response;
  }, function (error) {
    // 对响应错误做点什么
    
    if (error.response) {
        // 服务器响应了错误状态码
        const { status, data } = error.response;
        
        console.error('API响应错误:', {
            status,
            url: error.config?.url,
            data,
            message: data?.message || '未知错误'
        });
        
        // 处理token过期
        if (status === 401) {
            console.log('Token已过期，清除本地存储');
            localStorage.removeItem('token');
            localStorage.removeItem('userId');
            localStorage.removeItem('userEmail');
            localStorage.removeItem('touxiang');
            
            // 可以在这里添加重定向到登录页的逻辑
            if (window.location.pathname !== '/login') {
                window.location.href = '/login';
            }
        }
        
    } else if (error.request) {
        // 请求已发出但没有收到响应
        console.error('网络错误 - 无响应:', {
            url: error.config?.url,
            message: '网络连接失败，请检查网络设置'
        });
    } else {
        // 其他错误
        console.error('请求配置错误:', error.message);
    }
    
    return Promise.reject(error);
  });

export default instance